home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DS-CD ROM 2 1993 August
/
DS CD-ROM 2.Ausgabe (August 1993).iso
/
programm
/
ds0248
/
notes32k.svg
< prev
next >
Wrap
Text File
|
1992-02-26
|
3KB
|
67 lines
SuperVGA 32768 BGI driver
Version 1.0
December 6, 1991
Dies ist die erste version meines SuperVGA 32768 BGI-Treibers. Alle Funktionen
sind implementiert, aber es können noch Fehler auftreten.
Anmerkung: Paging, Palettenfunktionen und der Mauszeiger funktionieren mit
diesem Treiber nicht.
Benutzung de HiColor-Treibers:
Die Implementierung des 32768 Farben-Treibers machte einige Tricks
nötig, da das BGI-Interface nur 8-bit-Farbwerte zulässt, während
der Treiber 15-bit-Farbwerte benötigte.
Die Prozeduren, die geändert werden mußten waren diejenigen, denen
Farbwerte übergeben wurden (SetColor, SetFillStyle, SetFillPattern,
PutPixel und Floodfill) und diejenigen, die Farbwerte zurückliefern
(GetColor and GetPixel).
Da die HiColor-Modi keine Paletten unterstützen entschied ich mich,
den SetRGBPalette-Aufruf zu benutzen, um Farben zu setzen, da diese
Funktion Werte für die R-,B- und G-Komponente erwartet.
Das Format eines Bildpunkts in den HiColor-Modi ist:
-Byte 1- -Byte 0-
xRRRRRGG GGGBBBBB
Einige neue Funktionen wurden definiert, um die Farbwahl zu verein-
fachen. Zusätzlich wurde das Makro RGB (rv,gv,bv) definiert. Es wan-
delt die R-,G- und B-Werte in das obige Format um und liefert den
neuen Farbwert zurück.
* RealDrawColor(); - Setzt die aktuelle Zeichenfarbe
Benutzung:
setcolor(RealDrawColor(RGB(rval,gval,bval)); - HiColor-Modi
setcolor(RealDrawColor(cval)); - (Vorschlag für alle anderen Treiber)
* RealFillColor(); - Setzt die aktuelle Füll-Farbe
Benutzung:
setfillstyle(fillstyle,RealFillColor(RGB(rval,gval,bval)));
setfillstyle(fillstyle,RealFillColor(cval));
setfillpattern(fillpat,RealFillColor(RGB(rval,gval,bval)));
setfillpattern(fillpat,RealFillColor(cval));
* RealColor(); - PutPixel: setzt die Farbe des Bildpunkts
- FloodFill: setzt die Begrenzungsfarbe
putpixel(x,y,RealColor(RGB(rval,gval,bval)));
putpixel(x,y,RealColor(cval));
floodfill(x,y,RealColor(RGB(rval,gval,bval)));
floodfill(x,y,RealColor(cval));
* GetPixel liefert normalerweise nur einen 8-bit-Farbwert zurück.
Trotzdem ist der Wert, den der BGI-Treiber zurückliefert ein
16-bit-Wert in DX (das BGI-Kernel läd den Wert in AX und löscht
die obersten 8 bit). Um also den Farbwert eines Bildpunkts zu
ermitteln:
In Pascal:
Color := getpixel(x,y);
inline($89/$56/<Color); (* Läd den 15-bit-Farbwert *)
In C:
Color = getpixel(x,y);
Color = _DX;